.TH std::basic_string_view::substr 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::basic_string_view::substr \- std::basic_string_view::substr

.SH Synopsis
   constexpr basic_string_view substr( size_type pos = 0,               \fI(since C++17)\fP
                                       size_type count = npos ) const;

   Returns a view of the substring [pos, pos + rlen), where rlen is the smaller of
   count and size() - pos.

.SH Parameters

   pos   - position of the first character
   count - requested length

.SH Return value

   View of the substring [pos, pos + rlen).

.SH Exceptions

   std::out_of_range if pos > size().

.SH Complexity

   Constant.

.SH Example


// Run this code

 #include <cstddef>
 #include <iostream>
 #include <stdexcept>
 #include <string_view>

 int main()
 {
     typedef std::size_t count_t, pos_t;

     constexpr std::string_view data{"ABCDEF"};

     std::cout << data.substr() << '\\n'; // ABCDEF, i.e. data[0, 5] that is [0, 6)
     std::cout << data.substr(pos_t(1)) << '\\n'; // BCDEF, i.e. [1, 6)
     std::cout << data.substr(pos_t(2), count_t(3)) << '\\n'; // CDE, i.e. [2, 2 + 3)
     std::cout << data.substr(pos_t(4), count_t(42)) << '\\n'; // EF, i.e. [4, 6)

     try
     {
         [[maybe_unused]]
         auto sub = data.substr(pos_t(666), count_t(1)); // throws: pos > size()
     }
     catch (std::out_of_range const& ex)
     {
         std::cout << ex.what() << '\\n';
     }
 }

.SH Possible output:

 ABCDEF
 BCDEF
 CDE
 EF
 basic_string_view::substr: __pos (which is 666) > __size (which is 6)

.SH See also

   copy   copies characters
          \fI(public member function)\fP
   find   find characters in the view
          \fI(public member function)\fP
   substr returns a substring
          \fI(public member function of std::basic_string<CharT,Traits,Allocator>)\fP
